package com.example.blog_spring.utils;

import org.apache.tomcat.util.security.MD5Encoder;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

public class SecurityUtils {
    /**
     * 加密
     * @param password 用户注册时的密码
     * @return MD5加密(盐值和用户输入的密码)得到的 盐值 + 密文 存储在数据库
     */
    public static String encrypt(String password){
        String salt = UUID.randomUUID().toString().
                replace("-", "");
        String encode = DigestUtils.md5DigestAsHex((salt + password).getBytes());
        return salt + encode;
    }

    /**
     * 解密
     * @param password 用户登录时输入的密码
     * @param sqlPassword 数据库中存储的 盐值 + 密文
     * @return 验证的结果
     */
    public static boolean verity(String password, String sqlPassword){
        if(!StringUtils.hasLength(password) || !StringUtils.hasLength(sqlPassword)){
            return false;
        }
        String encrypt = sqlPassword.substring(0, 32);
        String encode = DigestUtils.md5DigestAsHex((encrypt + password).getBytes());
        return encode.equals(sqlPassword.substring(32));
    }

    public static void main(String[] args) {
        System.out.println(encrypt("20031218"));
    }
}
